Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Δημιουργία static library σε c++ .net 2008

Îåêßíçóå áðü ôï ìÝëïò stefanidou. Τελευταία δημοσίευση από το μέλος stefanidou στις 07-08-2009, 12:20. Υπάρχουν 8 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  17-07-2009, 14:35 52573

    Δημιουργία static library σε c++ .net 2008


    Καλησπέρα σας

    Θα ήθελα να δημιουργήσω ένα static library σε c++ .net 2008 (Framework 3.5) και να το καλέσω απο c++ vs 6 mfc application.
    Μπορείτε να μου πειτε τι project type θα χρησιμοποιήσω για να φτιάξω το static library στο .net, και πως θα κάνω export την function που θέλω, καθώς και πως θα το καλέσω απο το vs 6 c++ mfc application??

    Παιδιά είμαι καινούργια σ'αυτο το κομμάτι και θα εκτιμούσα πολύ αν μπορούσατε να με βοηθήσετε ίσως και με ένα μικρό κομμάτι κώδικα... Smile

    Ευχαριστώ εκ των προταίρων..
  •  17-07-2009, 15:07 52574 σε απάντηση της 52573

    Απ: Δημιουργία static library σε c++ .net 2008

    H C++/CLI  (η γλώσσα που θα χρησιμοποιήσεις-Visual C++ .NET 2008 είναι το IDE ή περιβάλλον εργασίας) μπορεί να συνδυάσει managed και unamanged κώδικα με τρόπους που καμία άλλη γλώσσα δεν μπορεί.Αλλά αν ο κώδικας περιέχει έστω και μία γραμμή managed (που να στοχεύει το .NET δηλαδή) κώδικα τότε αυτό που θα παραχθεί θα είναι ένα .NET assembly,με κατάληξη είτε .exe αν είναι εκτελέσιμο είτε .dll αν είναι class library.Στατική βιβλιοθήκη (.lib) λοιπόν με .NET κώδικα ΔΕΝ γίνεται να παραχθεί.Αυτό που σε ενδιαφέρει είναι να φτιάξεις μια class library.

    Όμως πριν αναφερθούμε σε λεπτομέρειες 2 ερωτήσεις:

    -Γιατί πρέπει να μεταφέρεις τον κώδικα από το Visual Studio 2008 στο Visual Studio 6;Το visual studio 2008 μια χαρά MFC υπστήριξη έχει,πιο πρόσφατη εκδοχή από του 6 και έχει και υποστήριξη C++/CLI που θα σου λύσει τα χέρια αισθητά.Είναι σίγουρα αυτή η μεταφορά απαραίτητη;

    -Ο κώδικας που θα χρησιμοποιήσεις από το .NET στην MFC εφαρμογή σου είναι ένα control ή κάτι άλλο;Το λέω για να αποφύγουμε γενικά σενάρια και να μπούμε απευθείας στο "ψητό".

  •  17-07-2009, 15:39 52578 σε απάντηση της 52574

    Απ: Δημιουργία static library σε c++ .net 2008

    Καταρχάς ευχαριστώ για την άμεση ανταπόκριση..

    Λοιπόν τα πράγματα έχουν ώς εξής:

    Υπάρχει ήδη ένα application σε c++ mfc vs 6 το οποίο θέλω να προσθέσω μια λειτουργία που δεν μπορώ να την κάνω στο vs6 αλλά το βρήκα στο vs . net 2008

    Συγκεκριμένα πρόκειται για το object Timezone του Globalization package. Συνεπώς αυτό που θέλω να κάνω είναι να φτίαξω το dll σε c++ .net 2008 και να το καλώ απο το ήδη υπάρχον application(c++ vs 6)
    (Αποκλείουμε το ενδοχόμενο της μετατροπής του ήδη υπάρχοντος application σε .net... τουλαχιστον όχι ακόμα Smile)


    Ευχαριστώ
  •  17-07-2009, 17:31 52583 σε απάντηση της 52578

    Απ: Δημιουργία static library σε c++ .net 2008

    Πρώτα από όλα δοκίμασε να κάνεις upgrade το project σου σε VS 2008.Το .NET δεν υπήρχε στις εποχές του VS 6 και μόνο δυσκολίες θα σου προσφέρει.Η μετατροπή είναι εύκολη και αυτόματη απλά ανοίγοντας το project με VS 2008 (κράτα backup φυσικά).Μετά κάνε ένα δοκιμαστικό build&run και αν όλα πάνε καλά άσε το VS 6 στην γωνιά του.Smile

    Στο ίδιο solution που σου έφτιαξε ο wizard (solution είναι ο διάδοχος του workspace) πρόσθεσε ένα νέο project,Visual C++ -> CLR -> class library.Η C++/CLI παρότι έχει πολύ οικεία σύνταξη για ένα χρήστη της C++ έχει και διαφορές για να ανταποκριθεί στα σενάρια που αντιμετωπίζει.Ρίξε μια ματιά εδώ για μια μικρή εισαγωγή.Επίσης πρέπει να σκεφτείς πως θα επικοινωνεί η κλάση σου με την MFC εφαρμογή,η χρήση των εγγενών τύπων της C++ διευκολύνει αρκετά.Ορίστε ένα μικρό δείγμα κώδικα:

    επαναλαμβάνω ότι syntax higlighting για C++/CLI ή έστω C/C++ θα ήταν μια επιθυμητή προσθήκη στο site

    using namespace System;

    namespace test {

    public ref class TestClass

    {

    public:

    DateTime Uselessfunction()

    {

    TimeZone ^zone=TimeZone::CurrentTimeZone;

    return

    zone->ToUniversalTime(DateTime::Now);

    }

    };

    }

    Κάνε build στο class library και πήγαινε στα project properties του MFC project σου.Στα General Properties->Common Language Runtime Support επέλεξε Common Language Runtime Support (/clr).Αφού κάνεις apply κάνε δεξί κλικ στο project και επέλεξε References...->Add New Reference...->Browse και επέλεξε το class library που παρήγαγες πριν.Και ένα δείγμα πώς θα το χρησιμοποιήσεις στο MFC project σου:

    test::TestClass ^tst=gcnew TestClass();

    System::DateTime date=tst->Uselessfunction();

    int day=date.Day;

    int month=date.Month;

    int year=date.Year;

    // Κάνε κάτι με τα δεδομένα

    Μόλις μάθεις τα βασικά τα χέρια σου θα λυθούν αμέσως,οπότε όποια απορία έχεις ελεύθερα.Smile

  •  17-07-2009, 19:06 52587 σε απάντηση της 52583

    Απ: Δημιουργία static library σε c++ .net 2008

    Σημείωση: Η MFC9 (VS2008) τρέχει σε λειτουργικά από Win2000 sp4 και πέρα.
    Άρα η μεταφορά από MFC6 σε MFC9 δεν είναι τόσο απλή υπόθεση (εκτός του ότι υπάρχουν σημαντικές αλλαγές και στις βιβλιοθήκες και στη σύνταξη της C++).

    In dark places we will be
    forever beyond the light
    In dark places we will be free
    from the pain that fills our lives
  •  17-07-2009, 19:59 52588 σε απάντηση της 52587

    Απ: Δημιουργία static library σε c++ .net 2008

    Εφόσον θα χρησιμοποιηθεί το .NET Framework 3.5 οι απαιτήσεις σε λειτουργικό είναι ακόμα πιο περιορισμένες από αυτές που θα έθετε η MFC9.

    Επίσης εκτός αν το project χρησιμοποιεί την MFC ως static library ή "κουβαλά" τα dll,το upgrade θα αποδειχτεί ιδιαίτερα ευεργετικό αν στοχεύει σε σύγχρονους υπολογιστές.

  •  17-07-2009, 20:25 52590 σε απάντηση της 52573

    Απ: Δημιουργία static library σε c++ .net 2008

    Χμ... Η αλήθεια είναι ότι δεν έχω επιχειρήσει τίποτα παρόμοιο στο παρελθόν. Επίσης, δεν ξέρω C++. Όπως έχουν αναφέρει και οι συνάδελφοι, το πιο σωστό είναι να μεταφερθεί η εφαρμογή στην πλατφόρμα του .NET. Για να λες ότι αυτό δεν είναι άμεσα εφικτό, μάλλον σχετίζεται ή με το μέγεθος της εφαρμογής ή με το data access technology ή και με τα δύο.

    Για να πετύχεις αυτό που θέλεις, μάλλον πρέπει να ξεκινήσεις από εδώ: Exposing .NET Framework Components to COM. Επίσης, ένα άρθρο με τον ίδιο τίτλο είναι κι αυτό. Τέλος, στο Google Books υπάρχει και ο τίτλος: .NET 2.0 Interoperability Recipies. Θα σου συνιστούσα να τον αγοράσεις είτε αυτόν είτε τη νέα έκδοση (αν υπάρχει). Με αφορμή το post σου άρχισα να σκέφτομαι ότι δε θα ήταν κακό να βρίσκεται στη βιβλιοθήκη μου.


    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
  •  17-07-2009, 20:50 52592 σε απάντηση της 52590

    Απ: Δημιουργία static library σε c++ .net 2008

    Αν δεν κάνει upgrade από Visual Studio 6 σε Visual Studio 2008 τότε μόνο κάνοντας expose στο COM θα μπορέσει να χρησιμοποιήσει την class library αλλά ούτε ευχάριστη εμπειρία θα είναι και ούτε είναι εγγυημένο ότι θα δουλέψουν όλα σωστά.Για αυτόν τον λόγο ρώτησα αν το project είναι απαραίτητο να παραμείνει στο VS 6.
  •  07-08-2009, 12:20 52980 σε απάντηση της 52592

    Απ: Δημιουργία static library σε c++ .net 2008

    Αν και λίγο αργά αλλά σας ευχαριστώ για την βοήθεια.. Smile
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems